This specification relates to runtime environments. A runtime environment can include a set of software development tools for creating software applications which benefit during execution from a shared runtime and the components included within the shared runtime. A runtime environment is not necessarily platform-specific. For example, a runtime environment may be used to generate individual runtimes appropriate for supporting one or more software applications being executed upon one or more operating system platforms. Examples of runtime environments include the Java Development Kit (JDK), available from Sun Microsystems, Inc. of Santa Clara, Calif. or the .NET Framework available from Microsoft Corp. of Seattle, Wash.
A runtime can be installed upon a computing device to provide software support for processes related to one or more software applications. The runtime can include, for example, one or more software libraries and/or other files (e.g., files including language-specific strings for graphical user interface (GUI) generation). Such software libraries can be shared by different applications, just as traditional software libraries on computer systems. Traditional software library schemes permit the set of locations at which a library is found to be modified, sometimes under the control of the application, the operating system, the computer administrator, or some combination of these. Moreover, traditional software library schemes have also allowed a library to be made captive to the application loading it, and some runtimes can also be deployed in a captive mode (e.g., Eclipse is packaged with a captive copy of Java).
In the case of runtime libraries, the software support provided by the runtime can include dynamic optimization of the application being executed (e.g., GUI generation based upon the size of the display attached to the computing device, etc.), the loading and linking of corollary information required to execute an application (e.g., foreign language libraries, etc.), machine code generation, and/or software execution. The runtime may be platform-specific. For example, the runtime may be generated to include the capability of interfacing with a specific type of operating system to provide services to the software application(s).
Because the runtime can be used to provide services to the software application(s) in lieu of the operating system, the runtime may be referred to as a virtual machine. During execution, a software application may issue commands to the virtual machine rather than the operating system (e.g., for peripheral support, memory management, etc.) and the virtual machine in turn may provide the software support typically provided by an operating system. The virtual machine, in some implementations, may act as a translator between the application executable and the operating system. For example, the software application may be platform-independent, while the virtual machine has platform-specific capabilities.